class Solution {
    public List<List<Integer>> levelOrder(TreeNode root) {
           List<List<Integer>> list = new ArrayList<>() ;
             if(root == null)return list;
         Queue<TreeNode> queue = new LinkedList<>() ;
         queue.offer(root);
         while(!queue.isEmpty()){
             int size = queue.size() ;
             List<Integer> tmp = new ArrayList() ;
             while(size!=0){
                  TreeNode cur = queue.poll() ;
                tmp.add(cur.val);
                size -- ;
                if(cur.left != null){
                    queue.offer(cur.left);
                }
                if(cur.right != null){
                    queue.offer(cur.right);
                }
             }
             list.add(tmp);
         }
        return list;
    }
}